package modelo;
import junit.framework.Assert;
import org.junit.Before;
import org.junit.Test;

public class MinaTripleConRetardoTests {

	private Municion minaTriple;
	private Coordenada posicion;
	@Before
		
	public void setUp(){
		
		posicion = new Coordenada(2,1);
		minaTriple = new MinaTripleConRetardo(posicion);
	}
		
	@Test
	public void testElCostoDeUnaMinaTripleEsDe125Puntos(){
			
		Assert.assertEquals(minaTriple.getCosto(),125);
		
	}
		
	@Test
		
	public void testMinaTripleNoUsadaDebeDarFalse(){
		
		Assert.assertFalse(minaTriple.estaUsada());
	}
		
		
	@Test
		
	public void testMinaTripleCon1TurnoUsadaDebeDarFalse(){


		Coordenada  posicion = new Coordenada (1,1);
		Movimiento movimiento = new MovimientoAlSur();
		Orientacion miOrientacion = new OrientacionHorizontal();
		Nave lancha = new Lancha(posicion,movimiento,miOrientacion);
		
		minaTriple.vivir();
		minaTriple.atacar(lancha);
		Assert.assertFalse(minaTriple.estaUsada());
		
	}
		
		
	@Test
		
	public void testMinaTripleCon2TurnosUsadaDebeDarFalse(){


		Coordenada  posicion = new Coordenada (1,1);
		Movimiento movimiento = new MovimientoAlSur();
		Orientacion miOrientacion = new OrientacionHorizontal();
		Nave lancha = new Lancha(posicion,movimiento,miOrientacion);
		
		minaTriple = new MinaTripleConRetardo(posicion);
		minaTriple.vivir();
		minaTriple.vivir();
		minaTriple.atacar(lancha);
		Assert.assertFalse(minaTriple.estaUsada());
	
	}
		

	@Test
	public void testMinaTripleConTresTurnosUsadaEnPosicionVaciaDebeDarTrue(){
			

		Coordenada  posicion = new Coordenada (1,1);		
		minaTriple = new MinaTripleConRetardo(posicion);
		minaTriple.vivir();
		minaTriple.vivir();
		minaTriple.vivir();
		minaTriple.atacar(null);
		Assert.assertTrue(minaTriple.estaUsada());
		
	}
		
	@Test
		
	public void testMinaTripleCon3TurnosUsadaEnPosicionConNaveDebeDarTrue(){
		
		Coordenada  posicion = new Coordenada (1,1);		
		Movimiento movimiento = new MovimientoAlSur();
		Orientacion miOrientacion = new OrientacionHorizontal();
		Nave lancha = new Lancha(posicion,movimiento,miOrientacion);
		
		minaTriple = new MinaTripleConRetardo(posicion);
		minaTriple.vivir();
		minaTriple.vivir();
		minaTriple.vivir();
		minaTriple.atacar(lancha);
		Assert.assertTrue(minaTriple.estaUsada());
		
	}
	
	
	@Test
	
	public void testMinaTripleCon3TurnosUsadaEnPosicionConNaveDebeDestruir(){
			
		Coordenada  posicion = new Coordenada (1,1);		
		Movimiento movimiento = new MovimientoAlSur();
		Orientacion miOrientacion = new OrientacionHorizontal();
		Nave lancha = new Lancha(posicion,movimiento,miOrientacion);
				
		minaTriple = new MinaTripleConRetardo(posicion);

		minaTriple.vivir();
		minaTriple.vivir();
		
		minaTriple.atacar(lancha);
		
		posicion = new Coordenada(2,1);
		minaTriple = new MinaTripleConRetardo(posicion);

		minaTriple.vivir();
		minaTriple.vivir();
		
		minaTriple.atacar(lancha);
		
		Assert.assertTrue(lancha.estaDestruida());
	}
	
}

